/* app 模块，它控制应用程序的事件生命周期。*/
/* BrowserWindow 模块，它创建和管理应用程序窗口。*/
const { app, BrowserWindow } = require('electron')
const path = require('path')

function createWindow() {
    /* 创建一个浏览器窗口。*/
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js')
        }
    })

    /* 将index.html加载进一个新的BrowserWindow实例。*/
    mainWindow.loadFile('index.html')
    /* 拼接路径比单文件名更好 */
    /* mainWindow.loadFile(path.join(__dirname, 'index.html')) */

    /* 打开开发工具。*/
    // mainWindow.webContents.openDevTools()
}

/* 当 Electron 初始化完成，准备好创建浏览器窗口时 app.whenReady() 方法就会触发。*/
/* 一些 API 只能在 app.whenReady() 方法内使用。*/
app.whenReady().then(() => {
    createWindow()

    app.on('activate', function () {
        /* activate事件是专为 macOS 系统定制的事件 */
        /* 在 macOS 系统中 */
        /* 没有其他窗口打开时单击dock图标，通常会在应用程序中重新创建一个窗口。*/
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})

/* 在Windows和Linux系统中，关闭所有窗口通常意味着程序应该停止运行。*/
/* 而在macOS系统中，关闭所有窗口只意味着发生了关闭所有窗口这一件事，程序仍在运行。快捷键commend+Q才会完全退出程序。*/
app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
})

/* 这个位置用来编写其他主进程代码，或 require 单文件形式的主进程代码。*/
